#ifndef DEMO_MAPGENERATOR_HPP
#define DEMO_MAPGENERATOR_HPP

#include <types.hpp>

namespace Data { class IEditableGlobalMap; }

namespace Demo {

class MapGeneratorOptions
{
public:
    enum LandscapeMethod {
        LandscapeNone,
        LandscapeAprilRandom
    };

    uint width;
    uint height;
    LandscapeMethod landscapeMethod;

    MapGeneratorOptions() :
        width(30),
        height(30),
        landscapeMethod(LandscapeNone)
    {}
};

class TileGenerator;

class MapGenerator
{
public:
    MapGenerator(const MapGeneratorOptions &options);
    ~MapGenerator();

    void generate(Data::IEditableGlobalMap &map) const;

private:
    void generateHeightMapDeprecated(Data::IEditableGlobalMap &map) const;

    MapGeneratorOptions _options;
    TileGenerator *_tileGen;
};

} // namespace Demo

#endif // DEMO_MAPGENERATOR_HPP
